Popular Searches
Popular Course Categories
Popular Courses

Checkboxes

HTML & Web Elements

Checkboxes in Selenium

Checkboxes are common web elements used in web applications to allow users to select one or more options independently. In Selenium WebDriver, checkboxes can be located and interacted with using methods such as click(), isSelected(), isDisplayed(), and isEnabled().

Checkbox automation is an important part of form testing because testers need to verify whether a checkbox can be selected, deselected, enabled, disabled, displayed correctly, and handled according to the application's business rules.

Checkbox handling is also included within Selenium training topics related to WebElements and form interactions. Learn more about Selenium Training and Register for a Course Demo.


1. What is a Checkbox?

A checkbox is an HTML form control that allows a user to select or deselect an option. Unlike radio buttons, multiple checkboxes can normally be selected at the same time.

<input type="checkbox" id="terms">

<label for="terms">I agree to the Terms and Conditions</label>

In this example, the checkbox is represented by the <input> element with type="checkbox".


2. Why Checkboxes are Important in Automation Testing

Checkboxes frequently appear in registration forms, checkout pages, filters, settings pages, surveys, preference screens, permissions, and terms-and-conditions sections.

  • Selecting terms and conditions
  • Choosing product filters
  • Selecting notification preferences
  • Enabling account settings
  • Selecting multiple products
  • Choosing user permissions
  • Selecting communication preferences
  • Testing form validation


3. Basic HTML Structure of a Checkbox

<input type="checkbox" id="subscribe" name="subscribe" value="yes">

<label for="subscribe">Subscribe to Newsletter</label>

Important attributes include:

AttributePurpose
typeDefines the input as a checkbox.
idProvides a unique identifier.
nameIdentifies the form field.
valueStores the value submitted with the form.
classProvides CSS-based identification or styling.
checkedIndicates that the checkbox is selected by default.
disabledPrevents user interaction.


4. Checkbox Types in Web Applications

  • Single checkbox
  • Multiple independent checkboxes
  • Pre-selected checkbox
  • Disabled checkbox
  • Dynamic checkbox
  • Custom styled checkbox
  • Checkbox inside a table
  • Checkbox inside a modal
  • Checkbox inside an iframe
  • Select All checkbox
  • Indeterminate checkbox


5. Setting Up Selenium for Checkbox Testing

The following Java example demonstrates a basic Selenium setup.

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

 

public class CheckboxTest {

    public static void main(String[] args) {

        WebDriver driver = new ChromeDriver();

        driver.get("https://example.com");

        driver.quit();

    }

}


6. Locating a Checkbox Using ID

If a checkbox has a unique ID, the ID locator is generally straightforward to use.

WebElement checkbox = driver.findElement(By.id("terms"));

checkbox.click();


7. Locating a Checkbox Using Name

WebElement checkbox = driver.findElement(By.name("subscribe"));

checkbox.click();


8. Locating a Checkbox Using Class Name

WebElement checkbox = driver.findElement(By.className("checkbox-input"));

checkbox.click();

Class Name should be used carefully when multiple elements have the same class.


9. Locating a Checkbox Using Tag Name

WebElement checkbox = driver.findElement(By.tagName("input"));

checkbox.click();

Using only input may locate the wrong element when a page contains multiple input fields.


10. Locating a Checkbox Using CSS Selector

WebElement checkbox = driver.findElement(

    By.cssSelector("input[type='checkbox']")

);

checkbox.click();

CSS selectors are useful when the checkbox does not have a convenient unique ID.


11. CSS Selector Using ID

WebElement checkbox = driver.findElement(By.cssSelector("#terms"));

checkbox.click();


12. CSS Selector Using Class

WebElement checkbox = driver.findElement(

    By.cssSelector(".checkbox-input")

);

checkbox.click();


13. CSS Selector Using Attribute

WebElement checkbox = driver.findElement(

    By.cssSelector("input[type='checkbox']")

);

checkbox.click();


14. CSS Selector Combining Attributes

WebElement checkbox = driver.findElement(

    By.cssSelector("input[type='checkbox'][name='subscribe']")

);

checkbox.click();


15. Locating Checkbox Using XPath

WebElement checkbox = driver.findElement(

    By.xpath("//input[@type='checkbox']")

);

checkbox.click();


16. XPath Using ID

WebElement checkbox = driver.findElement(

    By.xpath("//input[@id='terms']")

);

checkbox.click();


17. XPath Using Name

WebElement checkbox = driver.findElement(

    By.xpath("//input[@name='subscribe']")

);

checkbox.click();


18. XPath Using Multiple Attributes

WebElement checkbox = driver.findElement(

    By.xpath("//input[@type='checkbox' and @name='subscribe']")

);

checkbox.click();


19. XPath Using Label Text

Sometimes the checkbox itself does not have a useful locator, but its associated label contains meaningful text.

WebElement checkbox = driver.findElement(

    By.xpath("//label[normalize-space()='Subscribe to Newsletter']/preceding-sibling::input")

);

checkbox.click();


20. The click() Method

The click() method is used to select or deselect a checkbox.

WebElement checkbox = driver.findElement(By.id("terms"));

checkbox.click();

If the checkbox is unchecked, clicking it normally selects it. If it is already selected, clicking it normally deselects it.


21. Understanding isSelected()

The isSelected() method checks whether a checkbox is currently selected.

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (checkbox.isSelected()) {

    System.out.println("Checkbox is selected");

} else {

    System.out.println("Checkbox is not selected");

}


22. Difference Between click() and isSelected()

MethodPurpose
click()Performs a click action.
isSelected()Checks the current selection state.
isDisplayed()Checks whether the checkbox is visible.
isEnabled()Checks whether the checkbox is enabled.


23. Select Checkbox Only If It Is Not Selected

A common automation requirement is to select a checkbox only when it is currently unchecked.

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (!checkbox.isSelected()) {

    checkbox.click();

}

This approach avoids accidentally deselecting an already selected checkbox.


24. Deselect Checkbox Only If It Is Selected

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (checkbox.isSelected()) {

    checkbox.click();

}


25. Verify Checkbox Is Selected

WebElement checkbox = driver.findElement(By.id("terms"));

 

checkbox.click();

 

if (checkbox.isSelected()) {

    System.out.println("Checkbox selected successfully");

}


26. Verify Checkbox Is Not Selected

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (!checkbox.isSelected()) {

    System.out.println("Checkbox is not selected");

}


27. Checking Checkbox Visibility

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (checkbox.isDisplayed()) {

    System.out.println("Checkbox is visible");

}


28. Checking Checkbox Enabled State

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (checkbox.isEnabled()) {

    System.out.println("Checkbox is enabled");

} else {

    System.out.println("Checkbox is disabled");

}


29. Complete Checkbox Validation

WebElement checkbox = driver.findElement(By.id("terms"));

 

System.out.println("Displayed: " + checkbox.isDisplayed());

System.out.println("Enabled: " + checkbox.isEnabled());

System.out.println("Selected: " + checkbox.isSelected());


30. Multiple Checkboxes

A page may contain several checkboxes such as multiple product categories.

<input type="checkbox" name="skill" value="java"> Java

<input type="checkbox" name="skill" value="selenium"> Selenium

<input type="checkbox" name="skill" value="python"> Python

<input type="checkbox" name="skill" value="sql"> SQL


31. Finding Multiple Checkboxes

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);


32. Import Required for List

import java.util.List;


33. Count Number of Checkboxes

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);

 

System.out.println("Total checkboxes: " + checkboxes.size());


34. Select All Checkboxes

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);

 

for (WebElement checkbox : checkboxes) {

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


35. Deselect All Checkboxes

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);

 

for (WebElement checkbox : checkboxes) {

    if (checkbox.isSelected()) {

        checkbox.click();

    }

}


36. Select Specific Checkbox From Multiple Checkboxes

WebElement seleniumCheckbox = driver.findElement(

    By.xpath("//input[@value='selenium']")

);

 

if (!seleniumCheckbox.isSelected()) {

    seleniumCheckbox.click();

}


37. Select Checkbox Based on Label

WebElement checkbox = driver.findElement(

    By.xpath("//label[normalize-space()='Selenium']/preceding-sibling::input")

);

 

if (!checkbox.isSelected()) {

    checkbox.click();

}


38. Handling Checkbox With Following-Sibling

WebElement checkbox = driver.findElement(

    By.xpath("//label[normalize-space()='Java']/preceding-sibling::input")

);

 

checkbox.click();


39. Handling Checkbox With Parent Container

WebElement checkbox = driver.findElement(

    By.xpath("//div[contains(@class,'skill-option')]//input[@type='checkbox']")

);

 

checkbox.click();


40. Checkbox With Dynamic ID

Modern web applications may generate dynamic IDs.

<input type="checkbox" id="checkbox_98231">

Instead of depending on the complete dynamic ID, use stable attributes when available.

WebElement checkbox = driver.findElement(

    By.cssSelector("input[type='checkbox']")

);


41. XPath contains() for Dynamic Checkbox

WebElement checkbox = driver.findElement(

    By.xpath("//input[contains(@id,'checkbox_')]")

);


42. XPath starts-with() for Dynamic Checkbox

WebElement checkbox = driver.findElement(

    By.xpath("//input[starts-with(@id,'checkbox_')]")

);


43. Handling Disabled Checkbox

WebElement checkbox = driver.findElement(By.id("disabledOption"));

 

if (checkbox.isEnabled()) {

    checkbox.click();

} else {

    System.out.println("Checkbox is disabled");

}

A disabled checkbox should normally not be clicked because the application intentionally prevents interaction.


44. Handling Pre-Selected Checkbox

Some checkboxes may already be selected when the page loads.

WebElement checkbox = driver.findElement(By.id("newsletter"));

 

if (checkbox.isSelected()) {

    System.out.println("Checkbox is already selected");

} else {

    checkbox.click();

}


45. Checkbox With Label

<input type="checkbox" id="emailAlert">

<label for="emailAlert">Receive Email Alerts</label>

When the label is correctly associated with the checkbox, clicking the label may also change the checkbox state.


46. Clicking Label Instead of Checkbox

WebElement label = driver.findElement(

    By.cssSelector("label[for='emailAlert']")

);

 

label.click();

This technique can be useful when the actual checkbox is hidden or visually replaced by a custom UI component.


47. Custom Styled Checkbox

Modern websites often hide the native checkbox and use CSS to display a custom checkbox.

<input type="checkbox" id="darkMode" hidden>

<label for="darkMode" class="custom-checkbox">

    Enable Dark Mode

</label>

In such cases, Selenium may need to interact with the associated label rather than the hidden input.


48. Handling Hidden Checkbox

WebElement checkbox = driver.findElement(By.id("darkMode"));

System.out.println(checkbox.isDisplayed());

If the input is hidden, directly calling click() may result in an interaction exception. Identify the visible control or associated label instead.


49. ElementClickInterceptedException

ElementClickInterceptedException can occur when another element is positioned over the checkbox or intercepts the click.

WebElement checkbox = driver.findElement(By.id("terms"));

 

try {

    checkbox.click();

} catch (ElementClickInterceptedException e) {

    System.out.println("Checkbox click was intercepted");

}


50. ElementNotInteractableException

This exception can occur when Selenium finds an element but the element cannot currently be interacted with.

try {

    checkbox.click();

} catch (ElementNotInteractableException e) {

    System.out.println("Checkbox cannot be interacted with");

}


51. NoSuchElementException

If Selenium cannot locate the checkbox, NoSuchElementException may occur.

try {

    WebElement checkbox = driver.findElement(By.id("terms"));

    checkbox.click();

} catch (NoSuchElementException e) {

    System.out.println("Checkbox was not found");

}


52. StaleElementReferenceException

A checkbox reference can become stale when the page dynamically refreshes or the DOM is rebuilt.

try {

    WebElement checkbox = driver.findElement(By.id("terms"));

    checkbox.click();

} catch (StaleElementReferenceException e) {

    System.out.println("Checkbox reference became stale");

}


53. Waiting for Checkbox Visibility

Dynamic applications may render checkboxes after the initial page load. An explicit wait can help synchronize the test.

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

WebElement checkbox = wait.until(

    ExpectedConditions.visibilityOfElementLocated(By.id("terms"))

);


54. Waiting for Checkbox to Become Clickable

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

 

WebElement checkbox = wait.until(

    ExpectedConditions.elementToBeClickable(By.id("terms"))

);

 

checkbox.click();


55. Implicit Wait for Checkbox

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

 

WebElement checkbox = driver.findElement(By.id("terms"));

checkbox.click();

Implicit waits apply globally to element searches.


56. Explicit Wait vs Implicit Wait

Implicit WaitExplicit Wait
Applies globally.Applies to a specific condition.
Useful for general element searching.Useful for dynamic conditions.
Configured once.Configured for specific operations.
Less condition-specific.More precise.


57. Selecting Checkboxes With JavaScript

JavaScript can sometimes be used when normal Selenium interaction is blocked by a custom UI implementation. It should generally be treated as a fallback because it may bypass normal user interaction behavior.

JavascriptExecutor js = (JavascriptExecutor) driver;

 

WebElement checkbox = driver.findElement(By.id("terms"));

 

js.executeScript("arguments[0].click();", checkbox);


58. JavaScript Checking Checkbox State

JavascriptExecutor js = (JavascriptExecutor) driver;

 

Boolean selected = (Boolean) js.executeScript(

    "return arguments[0].checked;",

    checkbox

);

 

System.out.println("Selected: " + selected);


59. When Not to Use JavaScript Click

  • Do not use JavaScript click as the first solution.
  • First verify the locator.
  • Check whether the element is visible.
  • Check whether it is enabled.
  • Check whether an overlay is blocking it.
  • Use explicit waits when synchronization is the problem.
  • Use JavaScript only when the application structure requires it.


60. Checkbox Inside a Form

<form>

    <input type="checkbox" id="terms">

    <label for="terms">Accept Terms</label>

    <button type="submit">Register</button>

</form>

A common test scenario is to verify that registration cannot continue unless the terms checkbox is selected.


61. Testing Mandatory Checkbox

WebElement checkbox = driver.findElement(By.id("terms"));

WebElement submit = driver.findElement(By.id("register"));

 

if (!checkbox.isSelected()) {

    checkbox.click();

}

 

submit.click();


62. Testing Terms and Conditions Checkbox

WebElement terms = driver.findElement(By.id("terms"));

 

if (!terms.isSelected()) {

    terms.click();

}

 

System.out.println("Terms accepted: " + terms.isSelected());


63. Testing Newsletter Checkbox

WebElement newsletter = driver.findElement(By.id("newsletter"));

 

if (!newsletter.isSelected()) {

    newsletter.click();

}


64. Testing Product Filter Checkboxes

List<WebElement> filters = driver.findElements(

    By.cssSelector("input[type='checkbox'][name='brand']")

);

 

for (WebElement filter : filters) {

    if (!filter.isSelected()) {

        filter.click();

    }

}


65. Selecting a Checkbox by Value

WebElement checkbox = driver.findElement(

    By.cssSelector("input[type='checkbox'][value='selenium']")

);

 

checkbox.click();


66. Selecting Multiple Specific Values

String[] values = {"java", "selenium", "sql"};

 

for (String value : values) {

    WebElement checkbox = driver.findElement(

        By.cssSelector("input[type='checkbox'][value='" + value + "']")

    );

 

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


67. Select All and Verify

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);

 

for (WebElement checkbox : checkboxes) {

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}

 

for (WebElement checkbox : checkboxes) {

    System.out.println(checkbox.isSelected());

}


68. Count Selected Checkboxes

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);

 

int selectedCount = 0;

 

for (WebElement checkbox : checkboxes) {

    if (checkbox.isSelected()) {

        selectedCount++;

    }

}

 

System.out.println("Selected checkboxes: " + selectedCount);


69. Count Unselected Checkboxes

int unselectedCount = 0;

 

for (WebElement checkbox : checkboxes) {

    if (!checkbox.isSelected()) {

        unselectedCount++;

    }

}

 

System.out.println("Unselected: " + unselectedCount);


70. Checkbox State Validation With TestNG

import static org.testng.Assert.assertTrue;

 

WebElement checkbox = driver.findElement(By.id("terms"));

 

checkbox.click();

 

assertTrue(checkbox.isSelected(), "Checkbox should be selected");


71. TestNG Validation for Unselected Checkbox

import static org.testng.Assert.assertFalse;

 

WebElement checkbox = driver.findElement(By.id("terms"));

 

assertFalse(

    checkbox.isSelected(),

    "Checkbox should not be selected initially"

);


72. Complete TestNG Checkbox Test

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.Assert;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.Test;

 

public class CheckboxTest {

    WebDriver driver;

 

    @BeforeMethod

    public void setup() {

        driver = new ChromeDriver();

        driver.get("https://example.com");

    }

 

    @Test

    public void verifyCheckbox() {

        WebElement checkbox = driver.findElement(By.id("terms"));

 

        if (!checkbox.isSelected()) {

            checkbox.click();

        }

 

        Assert.assertTrue(

            checkbox.isSelected(),

            "Checkbox should be selected"

        );

    }

 

    @AfterMethod

    public void tearDown() {

        driver.quit();

    }

}


73. Checkbox Testing With Page Object Model

In a Page Object Model framework, checkbox locators and interactions can be maintained inside the page class.

public class RegistrationPage {

 

    private WebDriver driver;

 

    private By termsCheckbox = By.id("terms");

 

    public RegistrationPage(WebDriver driver) {

        this.driver = driver;

    }

 

    public void acceptTerms() {

        WebElement checkbox = driver.findElement(termsCheckbox);

 

        if (!checkbox.isSelected()) {

            checkbox.click();

        }

    }

 

    public boolean isTermsSelected() {

        return driver.findElement(termsCheckbox).isSelected();

    }

}


74. Reusable Checkbox Utility Method

public void selectCheckbox(By locator) {

    WebElement checkbox = driver.findElement(locator);

 

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


75. Reusable Deselect Method

public void deselectCheckbox(By locator) {

    WebElement checkbox = driver.findElement(locator);

 

    if (checkbox.isSelected()) {

        checkbox.click();

    }

}


76. Generic Checkbox State Method

public boolean isCheckboxSelected(By locator) {

    return driver.findElement(locator).isSelected();

}


77. Checkbox Utility With Explicit Wait

public void selectCheckbox(By locator) {

    WebDriverWait wait =

        new WebDriverWait(driver, Duration.ofSeconds(10));

 

    WebElement checkbox = wait.until(

        ExpectedConditions.elementToBeClickable(locator)

    );

 

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


78. Checkbox Inside a Table

Applications often place checkboxes inside tables for selecting records.

<table>

    <tr>

        <td>

            <input type="checkbox" name="user" value="101">

        </td>

        <td>Rahul</td>

    </tr>

</table>


79. Select Checkbox for a Specific Table Row

WebElement checkbox = driver.findElement(

    By.xpath("//tr[td[normalize-space()='Rahul']]//input[@type='checkbox']")

);

 

checkbox.click();


80. Checkbox in Product Listing

WebElement productCheckbox = driver.findElement(

    By.xpath("//div[contains(@class,'product')][.//span[normalize-space()='Laptop']]//input[@type='checkbox']")

);

 

productCheckbox.click();


81. Select All Checkbox

A Select All checkbox is commonly used to select or deselect a group of checkboxes.

WebElement selectAll = driver.findElement(By.id("selectAll"));

selectAll.click();


82. Verify Select All Behavior

WebElement selectAll = driver.findElement(By.id("selectAll"));

selectAll.click();

 

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector(".item-checkbox")

);

 

for (WebElement checkbox : checkboxes) {

    System.out.println(checkbox.isSelected());

}


83. Testing Select All and Deselect All

  1. Open the page.
  2. Locate the Select All checkbox.
  3. Click Select All.
  4. Verify every individual checkbox is selected.
  5. Click Select All again.
  6. Verify every individual checkbox is deselected.


84. Indeterminate Checkbox

An indeterminate checkbox represents a partial selection state. It is commonly used when a parent category controls several child checkboxes.

JavascriptExecutor js = (JavascriptExecutor) driver;

 

WebElement checkbox = driver.findElement(By.id("parent"));

 

Boolean indeterminate = (Boolean) js.executeScript(

    "return arguments[0].indeterminate;",

    checkbox

);

 

System.out.println("Indeterminate: " + indeterminate);


85. Parent-Child Checkbox Relationship

Example:

Parent

 ├── Child 1

 ├── Child 2

 └── Child 3

If all child options are selected, the parent checkbox may become selected. If only some children are selected, the parent may become indeterminate.


86. Testing Parent Checkbox

WebElement parent = driver.findElement(By.id("parent"));

parent.click();

 

List<WebElement> children = driver.findElements(

    By.cssSelector(".child-checkbox")

);

 

for (WebElement child : children) {

    System.out.println(child.isSelected());

}


87. Checkbox Inside an Iframe

If a checkbox is inside an iframe, Selenium must switch into the iframe before interacting with the checkbox.

WebElement frame = driver.findElement(By.id("paymentFrame"));

 

driver.switchTo().frame(frame);

 

WebElement checkbox = driver.findElement(By.id("terms"));

checkbox.click();

 

driver.switchTo().defaultContent();


88. Checkbox Inside Nested Iframes

For nested iframes, Selenium must switch into each frame in the correct sequence.

driver.switchTo().frame("outerFrame");

driver.switchTo().frame("innerFrame");

 

driver.findElement(By.id("terms")).click();

 

driver.switchTo().defaultContent();


89. Checkbox in Shadow DOM

Some modern web components use Shadow DOM. In such cases, normal Selenium locators may not directly access elements inside a shadow root depending on the page structure and Selenium version.

WebElement host = driver.findElement(By.cssSelector("custom-checkbox"));

 

SearchContext shadowRoot = host.getShadowRoot();

 

WebElement checkbox = shadowRoot.findElement(

    By.cssSelector("input[type='checkbox']")

);

 

checkbox.click();


90. Checkbox in a Modal

When a checkbox is inside a modal, first ensure that the modal is visible and then locate the checkbox within the modal container.

WebElement modal = driver.findElement(By.id("settingsModal"));

 

WebElement checkbox = modal.findElement(

    By.cssSelector("input[type='checkbox']")

);

 

checkbox.click();


91. Checkbox Inside a Dynamic List

WebElement item = driver.findElement(

    By.xpath("//li[normalize-space()='Java']")

);

 

WebElement checkbox = item.findElement(

    By.cssSelector("input[type='checkbox']")

);

 

checkbox.click();


92. Checkbox Selection Based on Text

String option = "Selenium";

 

WebElement checkbox = driver.findElement(

    By.xpath("//div[normalize-space()='" + option + "']/preceding-sibling::input")

);

 

if (!checkbox.isSelected()) {

    checkbox.click();

}


93. Checkbox Automation Flow

Start

  |

  v

Open Web Page

  |

  v

Locate Checkbox

  |

  v

Is Element Present?

  |

  +---- No ----> Handle Locator/Error

  |

 Yes

  |

  v

Is Checkbox Enabled?

  |

  +---- No ----> Verify Disabled State

  |

 Yes

  |

  v

Check Current State

  |

  +---- Selected ----> Continue / Deselect if Required

  |

  +---- Not Selected ----> Click

  |

  v

Verify Final State

  |

  v

Continue Test

  |

  v

End


94. Common Checkbox Test Scenarios

ScenarioExpected Result
Checkbox is initially uncheckedCheckbox should be unselected.
Click unchecked checkboxCheckbox should become selected.
Click selected checkboxCheckbox should become unselected.
Checkbox is disabledUser should not be able to interact with it.
Select All is clickedAssociated checkboxes should be selected.
Select All is deselectedAssociated checkboxes should be deselected.
Mandatory checkbox is not selectedAppropriate validation should appear.
Checkbox is dynamically loadedAutomation should wait for the element.
Checkbox is inside iframeAutomation should switch to the iframe first.


95. Checkbox Validation Checklist

  • Verify checkbox is displayed.
  • Verify checkbox is enabled or disabled as expected.
  • Verify default selection state.
  • Verify selection behavior.
  • Verify deselection behavior.
  • Verify mandatory checkbox validation.
  • Verify Select All behavior.
  • Verify individual selection behavior.
  • Verify dynamic checkbox behavior.
  • Verify checkbox behavior across browsers.


96. Common Mistakes While Automating Checkboxes

  • Clicking a checkbox without checking its current state.
  • Using unstable dynamic IDs.
  • Using overly broad XPath expressions.
  • Ignoring visibility and enabled state.
  • Ignoring synchronization issues.
  • Using JavaScript click unnecessarily.
  • Not switching into an iframe.
  • Not verifying the final checkbox state.
  • Using indexes when a stable locator is available.
  • Not handling dynamically refreshed elements.


97. Bad Checkbox Automation

driver.findElement(By.xpath("//input")).click();

This locator may match the wrong input when the page contains many input elements.


98. Better Checkbox Automation

WebElement checkbox = driver.findElement(

    By.cssSelector("input[type='checkbox'][name='terms']")

);

 

if (!checkbox.isSelected()) {

    checkbox.click();

}


99. Best Practices for Checkbox Automation

  • Prefer stable and unique locators.
  • Use ID when it is stable and unique.
  • Use CSS or XPath when necessary.
  • Always consider the current checkbox state.
  • Use isSelected() before selecting or deselecting.
  • Use explicit waits for dynamic applications.
  • Keep checkbox operations reusable.
  • Use Page Object Model for larger projects.
  • Verify expected state after interaction.
  • Avoid unnecessary JavaScript execution.
  • Keep test data and locators maintainable.


100. Real-World Example: Registration Form

WebElement terms = driver.findElement(By.id("terms"));

WebElement newsletter = driver.findElement(By.id("newsletter"));

WebElement register = driver.findElement(By.id("register"));

 

if (!terms.isSelected()) {

    terms.click();

}

 

if (!newsletter.isSelected()) {

    newsletter.click();

}

 

register.click();


101. Real-World Example: Product Filters

String[] brands = {"Apple", "Samsung", "Dell"};

 

for (String brand : brands) {

    WebElement checkbox = driver.findElement(

        By.xpath("//label[normalize-space()='" + brand + "']/preceding-sibling::input")

    );

 

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


102. Real-World Example: User Permissions

String[] permissions = {

    "Read",

    "Write",

    "Delete"

};

 

for (String permission : permissions) {

    WebElement checkbox = driver.findElement(

        By.xpath("//label[normalize-space()='" + permission + "']/preceding-sibling::input")

    );

 

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


103. Real-World Example: Notification Settings

WebElement email = driver.findElement(By.id("emailNotification"));

WebElement sms = driver.findElement(By.id("smsNotification"));

WebElement push = driver.findElement(By.id("pushNotification"));

 

if (!email.isSelected()) {

    email.click();

}

 

if (!sms.isSelected()) {

    sms.click();

}

 

if (!push.isSelected()) {

    push.click();

}


104. Checkbox Automation With Assertions

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (!checkbox.isSelected()) {

    checkbox.click();

}

 

Assert.assertTrue(

    checkbox.isSelected(),

    "Terms checkbox should be selected"

);


105. Checkbox Automation With Logging

WebElement checkbox = driver.findElement(By.id("terms"));

 

System.out.println("Before click: " + checkbox.isSelected());

 

if (!checkbox.isSelected()) {

    checkbox.click();

}

 

System.out.println("After click: " + checkbox.isSelected());


106. Checkbox Test Data Example

CheckboxExpected StateAction
TermsSelectedSelect if unchecked
NewsletterOptionalSelect based on test data
SMS AlertsUncheckedLeave unchecked
Admin AccessSelectedVerify selection


107. Checkbox Test Case Format

Test Case IDTest ScenarioExpected Result
CHK001Verify checkbox visibilityCheckbox should be visible.
CHK002Verify checkbox enabled stateCheckbox should be enabled.
CHK003Select checkboxCheckbox should become selected.
CHK004Deselect checkboxCheckbox should become unselected.
CHK005Verify default stateExpected default state should match requirements.
CHK006Verify mandatory validationValidation should appear when required.
CHK007Verify Select AllAll related checkboxes should be selected.


108. Interview Question: How Do You Handle a Checkbox in Selenium?

Locate the checkbox using a suitable locator and use the click() method to select or deselect it. The isSelected() method can be used to verify its current state.

WebElement checkbox = driver.findElement(By.id("terms"));

 

if (!checkbox.isSelected()) {

    checkbox.click();

}


109. Interview Question: How Do You Check Whether a Checkbox Is Selected?

Use the isSelected() method.

boolean selected = checkbox.isSelected();


110. Interview Question: How Do You Select Multiple Checkboxes?

Use findElements() to obtain a list of matching checkboxes and iterate through them.

List<WebElement> checkboxes = driver.findElements(

    By.cssSelector("input[type='checkbox']")

);

 

for (WebElement checkbox : checkboxes) {

    if (!checkbox.isSelected()) {

        checkbox.click();

    }

}


111. Interview Question: How Do You Select a Checkbox Only If It Is Unchecked?

if (!checkbox.isSelected()) {

    checkbox.click();

}


112. Interview Question: How Do You Deselect a Checkbox?

If the checkbox is selected, click it to toggle it to the unselected state.

if (checkbox.isSelected()) {

    checkbox.click();

}


113. Interview Question: What Is the Difference Between Radio Button and Checkbox?

CheckboxRadio Button
Multiple options can normally be selected.Normally one option is selected from a group.
Used for independent selections.Used for mutually exclusive choices.
Can be selected and deselected.Usually selecting another option changes the selection.


114. Interview Question: Which Selenium Method Checks Checkbox Selection?

The isSelected() method checks whether a checkbox or other selectable element is currently selected.


115. Interview Question: What If the Checkbox Is Not Clickable?

First verify the locator, visibility, enabled state, page synchronization, overlays, iframe context, and custom UI structure. An explicit wait can be used when the checkbox becomes available dynamically.


116. Interview Question: How Do You Handle a Hidden Checkbox?

First understand how the application's UI is implemented. If the native checkbox is hidden and a visible label or custom control is used, interact with the appropriate visible element rather than blindly forcing a click on the hidden input.


117. Practical Checkbox Automation Project

Create an automation test for a registration page containing:

  • Terms and Conditions checkbox
  • Newsletter checkbox
  • SMS notification checkbox
  • Product update checkbox
  • Register button

Automation requirements:

  1. Open the registration page.
  2. Verify the default checkbox states.
  3. Select Terms and Conditions.
  4. Select Newsletter.
  5. Keep SMS notification unchecked.
  6. Verify the final states.
  7. Click Register.
  8. Validate the resulting page.


118. Advanced Checkbox Automation Project

Create a product filtering automation framework containing multiple brand and category checkboxes.

  • Locate filters using stable locators.
  • Select multiple brands.
  • Verify selected states.
  • Apply filters.
  • Verify filtered products.
  • Clear filters.
  • Verify all filters are reset.
  • Execute the test across supported browsers.
  • Integrate the test into TestNG.
  • Generate execution reports.


119. Checkbox Automation Best-Practice Summary

PracticeRecommendation
LocatorUse stable and unique locators.
SelectionUse isSelected() before toggling state.
SynchronizationUse appropriate waits for dynamic elements.
ValidationVerify the final checkbox state.
Multiple CheckboxesUse findElements() and loops.
Disabled CheckboxVerify isEnabled() before interaction.
Custom CheckboxUnderstand the HTML and interact with the correct visible control.
IframeSwitch into the iframe before locating the checkbox.
FrameworkUse reusable methods and Page Object Model.
AssertionsValidate expected states with assertions.


120. Conclusion

Checkbox handling is an essential Selenium WebDriver skill because checkboxes are frequently used in registration forms, settings, filters, permissions, checkout pages, surveys, and other web application workflows. Selenium provides simple methods such as click(), isSelected(), isDisplayed(), and isEnabled() to automate checkbox interactions and validations.

A reliable checkbox automation strategy should use stable locators, check the current selection state before clicking, handle dynamic elements with appropriate synchronization, validate the final state, and account for special cases such as disabled controls, custom checkboxes, iframes, tables, dynamic lists, and Select All functionality.

For structured Selenium learning and practical automation training, visit JustAcademy's Selenium Training Course. To explore the course demo registration option, visit Register for Course Demo.

whatsapp